#!/bin/bash
#InstalarU script

######################################################
#     FUNCIONES                                      #
######################################################

function titulo(){

echo  "
#################################################################
# TP SO7508 1mer cuatrimestre 2012. Tema U Copyright © Grupo 02 #
#################################################################
"

#Logueo la operacion
$COMANDOLOG -i  "
#################################################################
# TP SO7508 1mer cuatrimestre 2012. Tema U Copyright © Grupo 02 #
#################################################################" $LOGFILE

}

function validarNumero(){

#echo $1 | grep "[a-zA-Z ]"
aValidar=`echo $1 | grep "^[0-9][0-9]*$"`
 
if  test $? -eq 0 ; then
   if [[ $1 -ge 1 && $1 -le $2 ]] ; then
     echo "0"
   else
     echo "NO hay lugar. Tamaño maximo = "$2". Intente nuevamente"
   fi
else
  echo "NO es un numero. Intente nuevamente"
fi

}

function validarString(){

resultado=`echo "$1" | grep "^\(/\([A-Za-z0-9-]\+\)\)\+$"`

if  [ "$resultado" != "" ] ;then
   echo "1"
else
   echo "Directorio Invalido. Intente Nuevamente"
fi

}

function cargarVariables() {

#Si existe configuracion tomo las variables
if  test -s "$CONFIGURACION"; then
  GRUPO=`cat $CONFIGURACION | grep GRUPO | cut -s -d "=" -f2`
  ARRIDIR=`cat $CONFIGURACION | grep ARRIDIR | cut -s -d "=" -f2`
  RECHDIR=`cat $CONFIGURACION | grep RECHDIR | cut -s -d "=" -f2`
  BINDIR=`cat $CONFIGURACION | grep BINDIR | cut -s -d "=" -f2`
  MAEDIR=`cat $CONFIGURACION | grep MAEDIR | cut -s -d "=" -f2`
  REPODIR=`cat $CONFIGURACION | grep REPODIR | cut -s -d "=" -f2`
  LOGDIR=`cat $CONFIGURACION | grep LOGDIR | cut -s -d "=" -f2`
  LOGEXT=`cat $CONFIGURACION | grep LOGEXT | cut -s -d "=" -f2`
  LOGSIZE=`cat $CONFIGURACION | grep LOGSIZE | cut -s -d "=" -f2`
  DATASIZE=`cat $CONFIGURACION | grep DATASIZE | cut -s -d "=" -f2`
  CONFDIR=$GRUPO/confdir
else
  ARRIDIR=$GRUPO/arribos
  RECHDIR=$GRUPO/rechazados
  BINDIR=$GRUPO/bin
  MAEDIR=$GRUPO/mae
  REPODIR=$GRUPO/reportes
  LOGDIR=$GRUPO/log
  LOGEXT=".log"
  LOGSIZE=400
  DATASIZE=100
fi
}

function comprobarInstalador(){

  instalables="IniciarU.sh DetectarU.sh GrabarParqueU.sh ListarU.pl MoverU.sh StartD StopD LoguearU.sh Log.sh lista.mens"
  maestros="prod.mae cli.mae sucu.mae"
  faltantes=$1
  instalador=`ls $INSTDIR`
 
  for archivo in $faltantes
  do
  esInstalable=`echo $instalables | grep "$archivo"`
  esMaestro=`echo "$maestros" | grep "$archivo"`

  if [ "$esInstalable" != "" ] || [ "$esMaestro" != "" ]; then
      
  tengoBackUp=`echo $instalador | grep "$archivo"`
     
      if [ "$tengoBackUp" == "" ]; then
	  #no se puede arreglar la instalacion
	  echo "1"
	  return
      fi
  fi
  done
  echo "0"

}


function comprobarInstalacionEjecutables(){

bin_faltantes=""
if [ -d "$BINDIR" ] ;then
  
  binarios=`ls $BINDIR`

  for archivo in ${archivosInstalables[*]}
  do
  estan=`echo $binarios | grep $archivo`

  if [ -z "$estan" ]; then
     bin_faltantes="$bin_faltantes $archivo"
  fi
  done
  echo $bin_faltantes
fi

}

function comprobarInstalacionMaestros(){
mae_faltantes=""
if [ -d "$MAEDIR" ] ;then
  
  maestros=`ls $MAEDIR`

  for archivo in ${archivosMaestros[*]}
  do
  estan=`echo $maestros | grep $archivo`

  if [ -z "$estan" ]; then
     mae_faltantes="$mae_faltantes $archivo"
  fi
  done
  echo $mae_faltantes
fi

}

function estadoInstalacion(){

faltantesMae=""
faltantesBin=""
faltantes=""
contador=0

directorios=($MAEDIR $RECHDIR $ARRIDIR $BINDIR $REPODIR $LOGDIR $GRUPO/inst_recibidas $GRUPO/inst_rechazadas $GRUPO/inst_procesadas $GRUPO/parque_instalado 
$GRUPO/inst_ordenadas)

for directorio in ${directorios[*]}
do
    if  [ -d "$directorio" ] ;then
	contador=$(($contador +1))
	if [ "$directorio" = "$BINDIR" ] ; then
	  faltantesBin=`comprobarInstalacionEjecutables`
	fi
	if  [ "$directorio" = "$MAEDIR" ] ; then
	  faltantesMae=`comprobarInstalacionMaestros`
	fi
    else
      faltantes=$faltantes" "$directorio
    fi
done

if [ -n "$DATASIZE" -a -s "$CONFIGURACION" ] ;then
  contador=$(($contador +1))
else
  faltantes=$faltantes"Definir el DATASIZE "
fi

if [ -n "$LOGEXT" -a -s "$CONFIGURACION" ] ;then
  contador=$(($contador +1))
 else
  faltantes=$faltantes"Definir extension de archivos de log "
fi

if [ -n "$LOGSIZE" -a -s "$CONFIGURACION" ] ;then
  contador=$(($contador +1))
 else
  faltantes=$faltantes"Definir el LOGSIZE "
fi

#Cheque el estado de la instalacion segun cuantos directirios existian
#Devuelvo el estado

if [ ${contador} -eq 14 ]; then
  if  [ "$faltantesBin" != "" -o "$faltantesMae" != "" ] ; then
      ESTADO="INCOMPLETA"
      faltantes=$faltantesBin" "$faltantesMae
  else
      ESTADO="COMPLETA"
  fi
else
  if [ ${contador} -eq 0 ]; then
      ESTADO="NULA"
  else
      faltantes=$faltantes" "$faltantesBin" "$faltantesMae
      ESTADO="INCOMPLETA"
  fi
fi

}

function instalacionIncompleta(){

  #Se limpia la pantalla
  #clear
  titulo

  echo "*Directorio de Trabajo: $GRUPO
*Librería del Sistema: $CONFDIR"

#Logueo la operacion
$COMANDOLOG -i  "*Directorio de Trabajo: $GRUPO
*Librería del Sistema: $CONFDIR" $LOGFILE
  
  if [ -d "$BINDIR" ] ;then
    echo "*Directorio de instalación de los ejecutables: $BINDIR"
    $COMANDOLOG -i  "*Directorio de instalación de los ejecutables: $BINDIR" $LOGFILE
    ls -c $BINDIR
    contenido=`ls -m $BINDIR`
    $COMANDOLOG -i  "$contenido" $LOGFILE
  fi

  if [ -d "$MAEDIR" ] ;then
    echo "*Directorio de instalación de los archivos maestros: $MAEDIR"
    $COMANDOLOG -i  "*Directorio de instalación de los archivos maestros: $MAEDIR" $LOGFILE
    ls -c $MAEDIR
    contenido=`ls -m $MAEDIR`
    $COMANDOLOG -i  "$contenido" $LOGFILE
  fi

  if [ -d "$ARRIDIR" ] ;then
     echo "*Directorio de arribo de archivos externos: $ARRIDIR"
     $COMANDOLOG -i  "*Directorio de arribo de archivos externos: $ARRIDIR" $LOGFILE
  fi

  if [ -n "$DATASIZE" -a -s "$CONFIGURACION" ] ;then
     echo "*Espacio mínimo libre para el arribo de archivos externos: $DATASIZE Mb"
     $COMANDOLOG -i  "*Espacio mínimo libre para el arribo de archivos externos: $DATASIZE Mb" $LOGFILE
  fi

  if [ -d "$RECHDIR" ] ;then
    echo "*Directorio de grabación de los archivos externos rechazados: $RECHDIR"
    $COMANDOLOG -i  "*Directorio de grabación de los archivos externos rechazados: $RECHDIR" $LOGFILE
  fi
  if [ -d "$LOGDIR" ] ;then
     echo "*Directorio de grabación de los logs de auditoria: $LOGDIR"
     $COMANDOLOG -i  "*Directorio de grabación de los logs de auditoria: $LOGDIR" $LOGFILE
  fi

  if [ -n "$LOGEXT" -a -s "$CONFIGURACION" ] ;then
    echo "*Extensión para los archivos de log: $LOGEXT"
    $COMANDOLOG -i  "*Extensión para los archivos de log: $LOGEXT" $LOGFILE
  fi

  if [ -n "$LOGSIZE" -a -s "$CONFIGURACION" ] ;then
     echo "*Tamaño máximo para los archivos de log: $LOGSIZE Kb"
     $COMANDOLOG -i  "*Tamaño máximo para los archivos de log: $LOGSIZE Kb" $LOGFILE
  fi

  if [ -d "$REPODIR" ] ;then
    echo "*Directorio de grabación de los reportes de salida: $REPODIR"
    $COMANDOLOG -i  "*Directorio de grabación de los reportes de salida: $REPODIR" $LOGFILE
  fi

}

function instalacionLista(){

  #Se limpia la pantalla
  #clear
  titulo

  echo $estadoPERL

  echo "*Directorio de Trabajo: $GRUPO"
  echo "*Librería del Sistema: $CONFDIR"
  echo "*Directorio de instalación de los ejecutables: $BINDIR"
  echo "*Directorio de instalación de los archivos maestros: $MAEDIR"
  echo "*Directorio de arribo de archivos externos: $ARRIDIR"
  echo "*Espacio mínimo libre para el arribo de archivos externos: $DATASIZE Mb"
  echo "*Directorio de grabación de los archivos externos rechazados: $RECHDIR"
  echo "*Directorio de grabación de los logs de auditoria: $LOGDIR"
  echo "*Extensión para los archivos de log: $LOGEXT"
  echo "*Tamaño máximo para los archivos de log: $LOGSIZE Kb"
  echo "*Directorio de grabación de los reportes de salida: $REPODIR"

  #Logueo la operacion
  $COMANDOLOG -i  "*Directorio de Trabajo: $GRUPO" $LOGFILE
  $COMANDOLOG -i  "*Librería del Sistema: $CONFDIR" $LOGFILE
  $COMANDOLOG -i  "*Directorio de instalación de los ejecutables: $BINDIR" $LOGFILE
  $COMANDOLOG -i  "*Directorio de instalación de los archivos maestros: $MAEDIR" $LOGFILE
  $COMANDOLOG -i  "*Directorio de arribo de archivos externos: $ARRIDIR" $LOGFILE
  $COMANDOLOG -i  "*Espacio mínimo libre para el arribo de archivos externos: $DATASIZE Mb" $LOGFILE
  $COMANDOLOG -i  "*Directorio de grabación de los archivos externos rechazados: $RECHDIR" $LOGFILE
  $COMANDOLOG -i  "*Directorio de grabación de los logs de auditoria: $LOGDIR" $LOGFILE
  $COMANDOLOG -i  "*Extensión para los archivos de log: $LOGEXT" $LOGFILE
  $COMANDOLOG -i  "*Tamaño máximo para los archivos de log: $LOGSIZE Kb" $LOGFILE
  $COMANDOLOG -i  "*Directorio de grabación de los reportes de salida: $REPODIR" $LOGFILE

}

function primerosIngresos(){

valido="0"
while [ "$valido" != "1" ] ; do

  echo "1 -Defina el directorio de instalación de los ejecutables ($BINDIR):" ; read directorio
  $COMANDOLOG -i  "1 -Defina el directorio de instalación de los ejecutables ($BINDIR):" $LOGFILE
  $COMANDOLOG -i  "Ingresado por el usuario: $directorio" $LOGFILE

  if [ "$directorio" != "" ]; then
    valido=`validarString $directorio`
    if [ "$valido" = "1" ]; then
      BINDIR=$GRUPO$directorio;
    else
      echo $valido
      $COMANDOLOG -i  "$valido" $LOGFILE
    fi
  else
    valido="1"
  fi
done

valido="0"
while [ "$valido" != "1" ] ; do

  echo "2- Defina el directorio de instalación de los archivos maestros ($MAEDIR):" ; read directorio
  $COMANDOLOG -i  "2- Defina el directorio de instalación de los archivos maestros ($MAEDIR):" $LOGFILE
  $COMANDOLOG -i  "Ingresado por el usuario: $directorio" $LOGFILE

  if [ "$directorio" != "" ]; then
    valido=`validarString $directorio`
    if [ "$valido" = "1" ]; then
      MAEDIR=$GRUPO$directorio;
    else
      echo $valido
      $COMANDOLOG -i  "$valido" $LOGFILE
    fi
  else
    valido="1"
  fi
done


}

function segundosIngresos(){

valido="0"
while [ "$valido" != "1" ] ; do

  echo "3- Defina el directorio de arribo de archivos externo ($ARRIDIR):" ; read directorio
  $COMANDOLOG -i  "3- Defina el directorio de arribo de archivos externo ($ARRIDIR):" $LOGFILE
  $COMANDOLOG -i  "Ingresado por el usuario: $directorio" $LOGFILE

  if [ "$directorio" != "" ]; then
    valido=`validarString $directorio`
    if [ "$valido" = "1" ]; then
      ARRIDIR=$GRUPO$directorio;
    else
      echo $valido
      $COMANDOLOG -i "$valido" $LOGFILE
    fi
  else
    valido="1"
  fi
done

########################################################
###  valida tamaño del directirio de arribo de archivos
########################################################
invalido=1
while [ $invalido -eq 1 ] ; do

  echo "4- Defina el espacio mínimo libre para el arribo de archivos externos en MBytes ($DATASIZE):"; read mBytes
  $COMANDOLOG -i  "4- Defina el espacio mínimo libre para el arribo de archivos externos en MBytes ($DATASIZE):" $LOGFILE
  $COMANDOLOG -i  "Ingresado por el usuario: $mBytes" $LOGFILE

  if [ -n "$mBytes" ]; then
    ESPACIOLIBRE=`du -s $GRUPO | cut -d "/" -f1`
    valido=`validarNumero $mBytes $ESPACIOLIBRE`
    if  [ "$valido" = "0" ]; then
      DATASIZE=$mBytes; 
      invalido=0
    else
      echo $valido
      $COMANDOLOG -i "$valido" $LOGFILE
      invalido=1
    fi
  else
    DATASIZE=$DATASIZE
    invalido=0
  fi
done

valido="0"
while [ "$valido" != "1" ] ; do

  echo "5- Defina el directorio de grabación de los archivos externos rechazados ($RECHDIR):" ; read directorio
  $COMANDOLOG -i  "5- Defina el directorio de grabación de los archivos externos rechazados ($RECHDIR):" $LOGFILE
  $COMANDOLOG -i  "Ingresado por el usuario: $directorio" $LOGFILE

  if [ "$directorio" != "" ]; then
    valido=`validarString $directorio`
    if [ "$valido" = "1" ]; then
      RECHDIR=$GRUPO$directorio; 
    else
      echo $valido
      $COMANDOLOG -i "$valido" $LOGFILE
    fi
  else
    valido="1"
  fi
done

valido="0"
while [ "$valido" != "1" ] ; do

  echo "6- Defina el directorio de grabación de los logs de auditoria ($LOGDIR):" ;read directorio
  $COMANDOLOG -i  "6- Defina el directorio de grabación de los logs de auditoria ($LOGDIR):" $LOGFILE
  $COMANDOLOG -i  "Ingresado por el usuario: $directorio" $LOGFILE

  if [ "$directorio" != "" ]; then
    valido=`validarString $directorio`
    if [ "$valido" = "1" ]; then
      LOGDIR=$GRUPO$directorio; 
    else
      echo $valido
      $COMANDOLOG -i "$valido" $LOGFILE
    fi
  else
    valido="1"
  fi
done


invalido=1
while [ $invalido -eq 1 ] ; do
echo "7- Defina la extension para los archivos de log ($LOGEXT):" ; read extension
$COMANDOLOG -i  "7- Defina la extension para los archivos de log ($LOGEXT):" $LOGFILE
$COMANDOLOG -i  "Ingresado por el usuario: $extension" $LOGFILE

if [ -n "$extension" ] ;then
   validar=`echo "$extension" | grep "^\.[a-zA-Z0-9]\{3\}$"`
   if  test $? -eq 0 ;then
	LOGEXT=$extension
	invalido=0
   else
      echo "Extension invalida. Intente Nuevamente"
      $COMANDOLOG -i "Extension invalida. Intente Nuevamente" $LOGFILE
   fi
else
     LOGEXT=$LOGEXT
     invalido=0
fi
done
########################################################
###  valida tamaño maxiom del archivo log
########################################################
invalido=1
while [ $invalido -eq 1 ] ; do

  echo "8- Defina tamaño máximo para los archivos $LOGEXT en KBytes ($LOGSIZE):"; read kbytes
  $COMANDOLOG -i  "8- Defina tamaño máximo para los archivos $LOGEXT en KBytes ($LOGSIZE):" $LOGFILE
  $COMANDOLOG -i  "Ingresado por el usuario: $kbytes" $LOGFILE

  if [ -n "$kbytes" ]; then
    ESPACIOLIBRE=`du -s $GRUPO | cut -d "/" -f1`
    ESPACIOLIBRE=`expr $ESPACIOLIBRE \* 1024`
    valido=`validarNumero $kbytes $ESPACIOLIBRE`
    if  [ "$valido" = "0" ]; then
      LOGSIZE=$kbytes;
      invalido=0
    else
      echo $valido
      $COMANDOLOG -i "$valido" $LOGFILE
      invalido=1
    fi
  else
    LOGSIZE=$LOGSIZE
    invalido=0
  fi
done

valido="0"
while [ "$valido" != "1" ] ; do

  echo "9- Defina el directorio de grabación de los reportes de salida ($REPODIR):" ; read directorio
  $COMANDOLOG -i "9- Defina el directorio de grabación de los reportes de salida ($REPODIR):" $LOGFILE
  $COMANDOLOG -i  "Ingresado por el usuario: $directorio" $LOGFILE

  if [ "$directorio" != "" ]; then
    valido=`validarString $directorio`
    if [ "$valido" = "1" ]; then
      REPODIR=$GRUPO$directorio;
    else
      echo $valido
      $COMANDOLOG -i "$valido" $LOGFILE
    fi
  else
    valido="1"
  fi
done


}

function instalacion(){

#################################################################
#  Se crean los directorios
#################################################################

directorios=($MAEDIR $RECHDIR $ARRIDIR $BINDIR $REPODIR $LOGDIR $GRUPO/inst_recibidas $GRUPO/inst_rechazadas $GRUPO/inst_procesadas $GRUPO/parque_instalado 
$GRUPO/inst_ordenadas)

for directorio in ${directorios[*]}
    do
	  mkdir -p $directorio
    done

#################################################################
#Se mueven los archivos maestros al directorio correspondiente
#################################################################

echo "
16.2. Instalando archivos maestros . . ."

$COMANDOLOG -i "16.2. Instalando archivos maestros . . ." $LOGFILE

#Compruebo que existan, si es asi los muevo al directorio correspondiente
for archivo in ${archivosMaestros[*]}
    do
# Si existe el archivo lo muevoi
        if  [ -e "$GRUPO/$archivo" ] && [ ! -e $MAEDIR/$archivo ] ;	then
	  cp $GRUPO/$archivo $MAEDIR
	  mv $GRUPO/$archivo $INSTDIR
	  chmod 444  $MAEDIR/$archivo 
	else
	  if [ -e "$INSTDIR/$archivo" ] && [ ! -e $MAEDIR/$archivo ] ; then
	    cp $INSTDIR/$archivo $MAEDIR
	    chmod 444  $MAEDIR/$archivo 
	  fi
	fi
    done


#################################################################
#Se mueven los archivos ejecutables al directorio correspondiente
#################################################################

echo "
16.3. Instalando Programas y Funciones . . ."

$COMANDOLOG -i "16.3. Instalando Programas y Funciones . . ." $LOGFILE

for archivo in ${archivosInstalables[*]}
    do
       if  [ -e "$GRUPO/$archivo" ] && [ ! -e $BINDIR/$archivo ] ;	then
	  cp $GRUPO/$archivo $BINDIR
	  mv $GRUPO/$archivo $INSTDIR
	  chmod +x $BINDIR/$archivo
       else
         if [ -e "$INSTDIR/$archivo" ] && [ ! -e $BINDIR/$archivo ] ; then
	    cp $INSTDIR/$archivo $BINDIR
	    chmod +x $BINDIR/$archivo
	 fi
       fi
    done

COMANDOLOG=$BINDIR"/Log.sh"

}

function ingresoDeDatos(){

titulo

echo "######################################################
#    Comienzo de la instalacion                      #
######################################################"

  $COMANDOLOG -i  "
######################################################
#    Comienzo de la instalacion                      #
######################################################" $LOGFILE

echo "
* Directorio de Trabajo para la instalacion: $GRUPO 
* Contiene los siguiente archivos y directorios: " 

  $COMANDOLOG -i  "
* Directorio de Trabajo para la instalacion: $GRUPO 
* Contiene los siguiente archivos y directorios: "  $LOGFILE

ls -c $GRUPO
contenido=`ls -m $GRUPO`
$COMANDOLOG -i  "$contenido" $LOGFILE

  $COMANDOLOG -i  "
* Directorio de Trabajo para la instalacion: $GRUPO 
* Contiene los siguiente archivos y directorios: " $LOGFILE

echo "* Libreria del sistema: $CONFDIR
* Contiene los siguientes archivos: "
ls -c $CONFDIR
contenido=`ls -m $CONFDIR`
$COMANDOLOG -i  "$contenido" $LOGFILE

  $COMANDOLOG -i  "
* Libreria del sistema: $CONFDIR
* Contiene los siguientes archivos: " $LOGFILE

echo "
################################################
#    Estado de la instalacion: -- PENDIENTE -- #
################################################

Para completar la instalación Ud. Deberá:
1- Definir el directorio de instalación de los ejecutables
2- Definir el directorio de instalación de los archivos maestros
3- Definir el directorio de arribo de archivos externos
4- Definir el espacio mínimo libre para el arribo de archivos externos
5- Definir el directorio de grabación de los archivos externos rechazados
6 -Definir el directorio de grabación de los logs de auditoria
7- Definir la extensión y tamaño máximo para los archivos de log
8- Definir el directorio de grabación de los reportes de salida"


  $COMANDOLOG -i  "
################################################
#    Estado de la instalacion: -- PENDIENTE -- #
################################################

Para completar la instalación Ud. Deberá:
1- Definir el directorio de instalación de los ejecutables
2- Definir el directorio de instalación de los archivos maestros
3- Definir el directorio de arribo de archivos externos
4- Definir el espacio mínimo libre para el arribo de archivos externos
5- Definir el directorio de grabación de los archivos externos rechazados
6 -Definir el directorio de grabación de los logs de auditoria
7- Definir la extensión y tamaño máximo para los archivos de log
8- Definir el directorio de grabación de los reportes de salida" $LOGFILE
##################################################################################
##    Comienza la definicion por parte del usuario de los directorios a utilizar
##################################################################################

echo "
#  Definicion de directorios y variables     (con ENTER selecciona la opcion default)"

$COMANDOLOG -i "#  Definicion de directorios y variables     (con ENTER selecciona la opcion default)" $LOGFILE
#ingreso de directorio para ejecutables y maestros

primerosIngresos

termino=1
while [ $termino -eq 1 ] ; do

#ingreso de directorio para todo los demas
  segundosIngresos
 
  instalacionLista

  opcion=0
  while [ "$opcion" != "s" -a "$opcion" != "S" -a "$opcion" != "n" -a "$opcion" != "N" ] ; do
    echo ""
    echo "Los datos ingresados son correctos? (S-N)";  read opcion
    $COMANDOLOG -i "Los datos ingresados son correctos? (S-N) $opcion" $LOGFILE
    if [ "$opcion" = "s" -o "$opcion" = "S" ];  then

      confirmarInstalacion
    else
      if [ "$opcion" = "n" -o "$opcion" = "N" ];  then
       echo "Debe ingresar sus datos nuevamente. 
"	
	$COMANDOLOG -i "Debe ingresar sus datos nuevamente. " $LOGFILE
       termino=1
      fi
    fi
  done
done

}

function confirmarInstalacion(){
      opcion2=0
      while [ "$opcion2" != "s" -a "$opcion2" != "S" -a "$opcion2" != "n" -a "$opcion2" != "N" ] ; do
	echo ""
	echo "Iniciando Instalacion. Esta Ud, seguro? (S-N)"; read opcion2
	$COMANDOLOG -i  "Iniciando Instalacion. Esta Ud, seguro? (S-N) $opcion2" $LOGFILE
	
	if [ "$opcion2" = "s" -o "$opcion2" = "S" ] ; then
            echo ""
	    echo "16.2 Creando Estructuras de directorio . . ."
	    $COMANDOLOG -i  "16.1 Creando Estructuras de directorio . . ." $LOGFILE
	    termino=0
	    instalacion
	    actualizarConfiguracion
	    instal="Termino correctamente."
	else
            if [ "$opcion2" = "n" -o "$opcion2" = "N" ] ; then
	      instal="Fue cancelada.        "
	      termino=0
	    fi
	fi
      done

}

function verificarInstalacionPERL(){

#Controlar que Perl este instalado
PERL=`perl -v | grep version | cut -d "," -f 1,2 | cut -s -d " " -f4 | cut -s -d "," -f1`
PERL=5
  
  if [ ! -n "$PERL" ]; then 
      #si no esta instalado abortar
      estadoPERL="3.1.Para instalar el TP es necesario contar con Perl 5 o superior
instalado. Efectúe su instalación e inténtelo nuevamente. No tiene ninguna version de Perl instalada."
      PERL="NO"
  else
    if [ "$PERL" -gt 4 ]; then
      #si esta instalado, sigo, grabo en el log la version de perl
      VERSION=`perl -v | grep version | cut -d "," -f 1,2 | cut -s -d "," -f2`
      estadoPERL="3.2. Perl $PERL, $VERSION esta instalado."
      PERL="SI"
    else
      estadoPERL="3.1.Para instalar el TP es necesario contar con Perl 5 o superior
instalado. Efectúe su instalación e inténtelo nuevamente. Tiene Perl version: $PERL intalada."
      PERL="NO"
    fi
  fi

}

function actualizarConfiguracion(){
#################################################################
#    Se guardan los cambios en el archivo de configuracion
#################################################################
  echo "
16.4 Actualizando la configuración del sistema."
  $COMANDOLOG -i "16.4 Actualizando la configuración del sistema." $LOGFILE

if  test -s "$CONFIGURACION" ;then
#ya existe el archivo configuracion, debo cambiar las variables que cambiaron
  echo ""
  ultimaslineas=`tail -n +12 $CONFIGURACION`
  echo $ultimaslineas
  echo "CONFIGURACION"|> $CONFIGURACION
fi

  #no existia lleno todos
  echo "GRUPO="$GRUPO"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "CONFDIR="$CONFDIR"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "ARRIDIR="$ARRIDIR"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "RECHDIR="$RECHDIR"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "BINDIR="$BINDIR"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "MAEDIR="$MAEDIR"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "REPODIR="$REPODIR"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "LOGDIR="$LOGDIR"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "LOGEXT="$LOGEXT"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "LOGSIZE="$LOGSIZE"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION
  echo "DATASIZE="$DATASIZE"="`whoami`"="`date +"%D %X"` >> $CONFIGURACION

  if  [ -n "$ultimaslineas" ] ; then
    echo $ultimaslineas >> $CONFIGURACION
  fi

}

######################################################
#     COMIENZA EL SCRIPT                             #
######################################################
#clear

GRUPO=`pwd`
CONFDIR=$GRUPO/confdir
INSTDIR=$GRUPO/instalador
mkdir -p $CONFDIR
mkdir -p $INSTDIR

######################################################
#  Crea Configuracion  y el log si no existen        #
######################################################

CONFIGURACION=$CONFDIR/InstalarU.conf

######################################################
#   Archivos que se deben instalar                   #
######################################################

archivosMaestros=("prod.mae" "sucu.mae" "cli.mae")
archivosInstalables=(IniciarU.sh DetectarU.sh GrabarParqueU.sh ListarU.pl MoverU.sh StartD StopD LoguearU.sh Log.sh lista.mens)

ESTADO=0
cargarVariables

#Inicializando el archivo de log
#Creo el archivo de log de la instalación
LOGFILE=$CONFDIR/InstalarU.log

#Si ya se realizo la instalacion busco Log.sh en el bindir
#sino del directorio actual
if  test -s "$CONFIGURACION"; then
    
    if [ ! -e $BINDIR"/Log.sh" ] ; then
	  COMANDOLOG=$INSTDIR"/Log.sh"
	  chmod +x $INSTDIR"/Log.sh"
    else
      COMANDOLOG=$BINDIR"/Log.sh"
    fi
else
#me fijo si el directorio bindir por defecto existe
    if [ -d "$BINDIR" ] ;then
      COMANDOLOG=$BINDIR"/Log.sh"
    else
      if [ ! -e "Log.sh" ] ; then
	  COMANDOLOG=$INSTDIR"/Log.sh"
	  chmod +x $INSTDIR"/Log.sh"
      else
	COMANDOLOG="./Log.sh"
	chmod +x "./Log.sh"
      fi
    fi
fi

$COMANDOLOG -i "1. Comando InstalarU inicio de ejecucion" $LOGFILE

#Compruebo el estado de PERL
PERL=0
estadoPERL=0
verificarInstalacionPERL

######################################################
#    Detectar si el paquete ya fue instalado         #
######################################################
#Compruebo el estado de la instalacion
estadoInstalacion

case  $ESTADO  in
#El paquete no fue instalado nunca
           "NULA")  titulo
                    echo "$estadoPERL"
		    $COMANDOLOG -i "$estadoPERL" $LOGFILE
		    if [ "$PERL" = "SI" ]; then
			ingresoDeDatos
		    else
			instal="Cancelada"
		    fi;;
#El paquete fue instalado parcialmente
     "INCOMPLETA")  instalacionIncompleta
		    echo  "Componentes Faltantes $faltantes"  
		    $COMANDOLOG -i "Componentes Faltantes $faltantes" $LOGFILE
		    
		    result=`comprobarInstalador "$faltantes"`

		    if [ "$result" == "0" ]; then 
		      opcion=0
		      while [ "$opcion" != "s" -a "$opcion" != "S" -a "$opcion" != "n" -a "$opcion" != "N" ] ; do

			echo  "Desea completar la instalacion? "; read opcion 
			$COMANDOLOG -i "Desea completar la instalacion? [S-N] "$opcion $LOGFILE
		  
			if [ "$opcion" = "s" -o "$opcion" = "S" ];  then
			    echo "$estadoPERL"
			    $COMANDOLOG -i "$estadoPERL" $LOGFILE
			    if [ "$PERL" = "SI" ]; then
				instalacionLista
				confirmarInstalacion
			    else
				instal="Cancelada"
			    fi
			else
			    instal="INCOMPLETA"
			fi
		      done
		    else
			echo  "No se puede completar la instalacion: Faltan componentes indispensables. "
			instal="CORRUPTA"
		    fi;;

#El paquete ya fue instalado completamente
       "COMPLETA")  instalacionLista
		    instal="COMPLETA"
		    $COMANDOLOG -i  " * Proceso de instalacion cancelado *" $LOGFILE
		    echo " * Proceso de instalacion cancelado *";;
esac


echo "
################################################
#       La instalacion: $instal #
################################################"

$COMANDOLOG -i  "
################################################
#       La instalacion: $instal #
################################################" $LOGFILE
